"""
单例模式
    让类创建的对象，在系统中只有一个唯一的实例
    每一次执行 类名() 创建出来的对象的内存地址是相同的

单例模式实现步骤
    1 定义一个类属性，初始值是 None，用于记录单例对象的引用
    2 重写 __new__ 方法
    3 如果类属性 is None，则调用 父类方法分配空间，并在类属性中记录结果
    4 返回类属性中记录的结果引用
"""


class MusicPlayer(object):

    # 定义类属性记录单例对象的应用
    __instance = None

    # 重写父类的 new 方法
    def __new__(cls, *args, **kwargs):

        if cls.__instance is None:
            cls.__instance = super().__new__(cls)
        return cls.__instance


# 创建播放器对象
player1 = MusicPlayer()
player2 = MusicPlayer()
print(player1)
print(player2)
